// Package config 配置信息
// Title: mysql.config.go
// Description  全局参数配置
// Author  alittlexincan@163.com  2024/07/22 11:36
// update  alittlexincan@163.com  2024/07/22 11:36
package config

import "time"

// mysql
// Title mysql
// Description  		mysql 配置信息
// Author  				alittlexincan@163.com 			2024/07/22 11:36
// update  				alittlexincan@163.com 			2024/07/22 11:36
type mysql struct {
	Host                      string        `mapstructure:"host" json:"host"`                                           // 数据库地址
	Port                      string        `mapstructure:"port" json:"port"`                                           // 数据库端口
	User                      string        `mapstructure:"user" json:"user"`                                           // 数据库用户名
	Password                  string        `mapstructure:"password" json:"password"`                                   // 数据库密码
	Database                  string        `mapstructure:"database" json:"database"`                                   // 数据库名
	Charset                   string        `mapstructure:"charset" json:"charset"`                                     //要支持完整的UTF-8编码,需设置成: utf8mb4
	AutoMigrate               bool          `mapstructure:"autoMigrate" json:"autoMigrate"`                             // 初始化时调用数据迁移
	ParseTime                 bool          `mapstructure:"parseTime" json:"parseTime"`                                 //解析time.Time类型
	TimeZone                  string        `mapstructure:"timeZone" json:"timeZone"`                                   // 时区,若设置 Asia/Shanghai,需写成: Asia%2fShanghai
	DefaultStringSize         uint          `mapstructure:"defaultStringSize" json:"defaultStringSize"`                 // string 类型字段的默认长度
	DisableDatetimePrecision  bool          `mapstructure:"disableDatetimePrecision" json:"disableDatetimePrecision"`   // 禁用 datetime 精度
	SkipInitializeWithVersion bool          `mapstructure:"skipInitializeWithVersion" json:"skipInitializeWithVersion"` // 根据当前 MySQL 版本自动配置
	MaxIdleConns              int           `mapstructure:"maxIdleConns" json:"maxIdleConns"`                           // 最大空闲连接数
	MaxOpenConns              int           `mapstructure:"maxOpenConns" json:"maxOpenConns"`                           // 最大打开连接数
	ConnMaxLifetime           time.Duration `mapstructure:"connMaxLifetime" json:"connMaxLifetime"`                     // 连接最大生命周期
	SlowSql                   string        `mapstructure:"slowSql" json:"slowSql"`                                     // 慢SQL
	LogPath                   string        `mapstructure:"logPath" json:"logPath"`                                     // 日志文件路径
	LogLevel                  string        `mapstructure:"logLevel" json:"logLevel"`                                   // 日志记录级别
	IgnoreRecordNotFoundError bool          `mapstructure:"ignoreRecordNotFoundError" json:"ignoreRecordNotFoundError"` // 是否忽略ErrRecordNotFound(未查到记录错误)
}

type MysqlConfig struct {
	*mysql
}

func (mysql *mysql) MysqlConfig() *MysqlConfig {
	return &MysqlConfig{mysql}
}
